<?php

/**
 * 用户表模型
 */
class UsersModel extends Model {
	//自动验证
	public $validate = array(
	/**
	 * 用户自动验证
	 */
	array('username', 'nonull', '用户名不能为空', 2, 3), //用户名不能为空
	array('username', 'regexp:/^\w{6,12}$/', '用户名只能是a-zA-Z0-9_', 2, 3), //用户名规则
	array('username', 'minlen:6', '用户名不能少于6个字符', 2, 3), //用户名最小长度
	array('username', 'maxlen:12', '用户名不能大于12个字符', 2, 3), //用户名最大长度
	array('password', 'nonull', '密码不能为空', 2, 3), array('password', 'minlen:6', '用户名不能少于6个字符', 2, 3), //密码最小长度
	array('password', 'maxlen:12', '用户名不能大于12个字符', 2, 3), //密码最大长度
	array('password', 'confirm:rpassword', '两次密码不一致', 2, 1),
	//		 array('code','confirm:okCode','验证码输入不正确',2,1),   	//检测验证码是否正确
	);
	//自动完成
	public $auto = array( array('password', 'md5', 'function', 2, 3), //自动将密码加密为md5
	array('reg_time', 'time', 'function', 2, 3), //添加注册时间
	array('last_login_time', 'time', 'function', 2, 3), //添加最后一次登陆时间
	array('last_login_ip', 'ip_get_client', 'function', 2, 3) //添加 最后一次登陆的IP

	);

	/**
	 * 检测用户是否已经存在如果
	 * 返回true表示不存在
	 * 返回false表示存在
	 * @return boolean
	 */
	private function _checkUserIsExists($username) {
		$result = $this -> where("username='{$username}'") -> find();
		if (empty($result)) {
			return true;
		} else {
			return false;
		}
	}
	
	
	
	
	
	/**
	 * 查询当前用户数据
	 */
	public function findCurrentUser($uid) {
		$result = $this -> where("uid={$uid}") -> find();
		return $result;
	}

	
	/**
	 * 检测前台普通用户并且登陆
	 * 存在返回true否则返回false
	 */
	public function checkLogin() {
		//用于自动验证
		$_POST['rpassword'] = $_POST['password'];
		if (!$this -> create())
			return false;
		//做一个复本
		$data = $this -> data;
		$result = $this -> where("username='{$data['username']}' && password='{$data['password']}'") -> find();
		
		if ($result) {
				//如果查询成功返回相应的用户ID和用户名
				//再将内容更新这个有户的登陆信息
				$userInfo['uid'] = $result['uid'];
				$userInfo['username'] = $result['username'];
				$userInfo['is_lock'] = $result['is_lock'];
				$data['uid'] = $userInfo['uid'];
				//删除自动完成的reg_time  这个时间不用更新
				unset($data['reg_time']);
				$this -> update($data);
				return $userInfo;

		} else {
			return false;
		}
	}

	/**
	 * 新增用户方法
	 * 先检测用户是否存在如果不存在那么就添加
	 * 否则使用this->error返回相应的错误 信息
	 * 添加成功后跳转到首页
	 */
	public function addUser() {

		//用户返回用户的ID和用户名
		$uerInfo = array();
		if (!$this -> create())
			return false;
		//将处理好的数据做一个复制
		$data = $this -> data;
		//进行数据验证和自动完成
		if (!$this -> _checkUserIsExists($data['username'])) {
			$this -> error = '用户名已经存在';
			return false;
		}
		//获得主键ID（用户ID）
		$insertId = $this -> insert($data);
		if ($insertId) {
			//添加成功后返回一个数组  分别 为id和用户名用于直接登陆
			$userInfo['uid'] = $insertId;
			$userInfo['username'] = $data['username'];
			return $userInfo;
		}
	}

}
